package org.example.springioc.dano;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class Test {
    // 1. 属性注入
  //  @Autowired    //如果没有加这个注解的话就会报空指针异常，应为没有注入来获取到这个对象
    private Test2 test2; //并且属性赋值的，所以报错
   // @Autowired
    private Test3 test3;

    /*public Test(){

    }*/



    // 2. 构造方法注入
   /* public Test(Test2 test2) {
        this.test2 = test2;
    }
   *//* public Test(Test2 test2, Test3 test3) {   //不能写多个有参的构造方法，Spring 不知道去调用哪一个，会报错
        this.test2 = test2;
        this.test3 = test3;
    }*//*
   @Autowired  //要调用哪一个构造函数，就在前面加 @Autowired这个注解
    public Test(Test2 test2, Test3 test3) {
        this.test2 = test2;
        this.test3 = test3;
    }*/
    // 3. setter方法注入
    @Autowired
    public void setTest2(Test2 test2) { //setter方法注入 也需要加入 @Autowired
        this.test2 = test2;
    }
    @Autowired
    public void setTest3(Test3 test3) {
        this.test3 = test3;
    }

    public void tests() {
    //System.out.println(test2);
    System.out.println("test");
    test2.Hello();
    test3.Hello();
  }
}
